When a computer system is first powered on, system memory is not yet available. To initialize the computer system, the processor reads and begins executing a Basic Input/Output System (BIOS) program from a non-volatile memory. The processor can use a Cache-as-RAM (CAR) to enable a processor cache to serve as a memory. The BIOS can then load instructions from the non-volatile memory into the CAR, read and execute instructions from the CAR using the processor's instruction fetch, decode, and execute pipeline, read data from the CAR to use as function arguments, and store data results and intermediate values to the CAR.
Using a CAR before system memory is available is challenging because there is nowhere to store cache lines that are evicted, for example by a LRU algorithm. A no-eviction mode (NEM) can be used, but imposes a limitation on the amount of memory that can be used for code and data in order to accommodate smaller processor caches.